﻿using System.Threading.Tasks;

namespace BlamanticUI.Components;

/// <summary>
/// Render a box to display a message with state.
/// </summary>
[CssClass("message")]
public class Message : BlazorChildContentComponentBase,
    IHasUIComponent,
    IHasState,
    IHasAttatched,
    IHasHidden,
    IHasVisibility,
    IHasCompact,
    IHasColor,
    IHasSize,
    IHasIcon

{
    /// <summary>
    /// Gets or sets the state.
    /// </summary>
    [Parameter] public State? State { get; set; }
    /// <summary>
    /// Gets or sets a value indicating whether attach to another.
    /// </summary>
    [Parameter] public bool Attached { get; set; }
    /// <summary>
    /// Gets or sets the attach position in vertical.
    /// </summary>
    [Parameter] public VerticalPosition? AttachedVertical { get; set; }
    /// <summary>
    /// Gets or sets a visible state.
    /// </summary>
    [Parameter] public bool Visible { get; set; }
    /// <summary>
    /// Gets or sets hidden state.
    /// </summary>
    [Parameter] public bool Hidden { get; set; }
    /// <summary>
    /// Gets or sets a value indicating whether to compact space of text.
    /// </summary>
    [Parameter] public bool Compact { get; set; }
    /// <summary>
    /// Gets or sets the background color.
    /// </summary>
    [Parameter] public Color? Color { get; set; }
    /// <summary>
    /// Gets or sets the size of space and font.
    /// </summary>
    [Parameter] public Size? Size { get; set; }

    /// <summary>
    /// Gets or sets a value indicating whether a message can float above content that it is related to.
    /// </summary>
    [Parameter] [CssClass("floating")] public bool Floating { get; set; }
    /// <summary>
    /// Gets or sets the icon class.
    /// </summary>
    [Parameter][CssClass(" icon",Suffix=true)] public string IconClass { get; set; }
    /// <summary>
    /// Gets or sets a value indicating whether the content of child can render <see cref="BlamanticUI.Components.Icon" /> component properly.
    /// </summary>
    [Parameter] public bool Icon { get; set; }


}
